﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Coolite.Ext.Web;
using ENT.GP.Core.Proyecto;
using ENT.GP.Core.Lookup;
using ENT.GP.Core.Core;
using System.Xml;
using System.Xml.Xsl;
using ENT.GP.Core.Mail;  
namespace entgp.Proyectos.Desembolsos
{
    public partial class wucDesembolsos : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session.Count==0)
            {
                Button1.Disabled = true;
                btnGuardar.Disabled = true;
                hidRol.Text = "Consulta";
            }
            else
            {
                hidRol.Text = Session["CodigoRol"].ToString();
                if (hidRol.Text == "RAF")
                {
                    Button1.Disabled = false;
                    btnGuardar.Disabled = false;
                }
                else
                {
                    Button1.Disabled = true;
                    btnGuardar.Disabled = true;
                }
            }
            if (!IsPostBack)
            {
                sTipoTransaccion.DataSource = TipoTransaccionLookup.GetNameValueList();
                sTipoTransaccion.DataBind();

            }
        }

        protected void ToExcel(object sender, EventArgs e)
        {
            string json = GridData.Value.ToString();
            StoreSubmitDataEventArgs eSubmit = new StoreSubmitDataEventArgs(json, null);
            XmlNode xml = eSubmit.Xml;

            this.Response.Clear();
            this.Response.ContentType = "application/vnd.ms-excel";
            this.Response.AddHeader("Content-Disposition", "attachment; filename=reporteDesembolsos.xls");
            XslCompiledTransform xtExcel = new XslCompiledTransform();
            xtExcel.Load(Server.MapPath("Excel.xsl"));
            xtExcel.Transform(xml, null, this.Response.OutputStream);
            this.Response.End();
        }

        internal void Mostrar(int id)
        {
            
            int IdProy = id;//Convert.ToInt32(Request.QueryString.Get("IdP"));
            IdProyecto.Text=IdProy.ToString();
            var proy = Proyecto.GetProyecto(IdProy);
            txtValTotalPB.Number = Math.Round(proy.AportePlanConDescuento - proy.Saldo,2);
            txtPorDesDif.Number = proy.PorcentajeDifusion;
            txtPorDesSup.Number = proy.PorcentajeSupervision;
            txtValSaldoPagar.Number =Math.Round (proy.Saldo,2);
            txtInversionTotal1.Number = (proy.CostoTotal);
            txtValPlan1.Number = (proy.AportePlanConDescuento);
            txtValContraparte1.Number = (proy.AporteContraparte);
            txtValContraparte2.Number = (proy.AporteContraparte2);

            sDesembolsos.DataSource = proy.Desembolsos;
            sDesembolsos.DataBind();
            winDesembolsoProyecto.Show();
        }

        protected void Eliminar_Desembolso(object sender, AjaxEventArgs e)
        {
            try
            {
                int idd, idp;
                int.TryParse(e.ExtraParams["IDD"] ,out idd);
                int.TryParse(e.ExtraParams["IDP"], out idp);
                var proyecto = Proyecto.GetProyecto(idp);
                for (int i = 0; i < proyecto.Desembolsos.Count; i++)
                {
                    if (proyecto.Desembolsos[i].Id==idd)
                    {
                        proyecto.Desembolsos.RemoveAt(i);
                        break;
                    }
                }
                proyecto = proyecto.Save();
                e.Success = true;
            }
            catch (Exception ex)
            {
                e.Success = false;
                Util.RegistarLog(ex);
            }
        }

        #region Ventana Desembolso

        public void NuevoDesembolso_Click(object sender, AjaxEventArgs e)
        {
            LimpiarDesembolso();

            MostrarVentanaDesembolso();
        }

        public void MostrarVentanaDesembolso()
        {
            wInfoDesembolso.Show();
            wInfoDesembolso.Center();
            
            if (Session["NombreUsuario"]!=null)
            {
                txtResponsableDesembolso.Text = Session["NombreUsuario"].ToString();
            }
        }

        public void OcultarVentanaDesembolso()
        {
            wInfoDesembolso.Hide();
        }

        public void btnIngresarDesembolso_Click(object sender, AjaxEventArgs e)
        {
            OcultarVentanaDesembolso();
        }

        public void btnCancelarDesembolso_Click(object sender, AjaxEventArgs e)
        {
            LimpiarDesembolso();
            OcultarVentanaDesembolso();
        }

        public void LimpiarDesembolso()
        {
            dfFecha.Value = "";
            //cbxTipoTransaccion.Value = "";
            txtResponsableDesembolso.Text = "";
            txtMontoTransferencia.Text = "0";

            txtValDesDif.Text = "0";
            txtValDesSup.Text = "0";

            txtValorPlanilla.Text = "0";
            txtObservacionInfoDesembolso.Text = "";
        }

        protected void btnGuardar_Click(object sender, AjaxEventArgs e)
        {
            try
            {
                string jsonDesembolsos = e.ExtraParams["PDesembolsos"];
                int IdProy = Convert.ToInt32(IdProyecto.Text);//Convert.ToInt32(Request.QueryString.Get("IdP"));
                Proyecto proy = Proyecto.GetProyecto(IdProy);
                //Proyecto Coordinadores
                StoreDataHandler sdhDesembolsos = new StoreDataHandler(jsonDesembolsos);
                ChangeRecords<ProyectoDesembolso> crsdhDesembolsos = sdhDesembolsos.ObjectData<ProyectoDesembolso>();
                foreach (ProyectoDesembolso desembolso in crsdhDesembolsos.Updated)
                {
                    int indice = proy.Desembolsos.IndexOf(proy.Desembolsos.FirstOrDefault(x => x.Id == desembolso.Id));
                    Csla.Data.DataMapper.Map(desembolso, proy.Desembolsos[indice]);
                    
                }
                foreach (ProyectoDesembolso desembolso in crsdhDesembolsos.Created)
                {
                    proy.Desembolsos.Add(desembolso);
                    Mail.EnviarMail("", Session["Email"].ToString(), "Aviso de Desenvolso", "Monto de desenvolso es el siguiente:" + desembolso.Saldo.ToString());
                }
                proy = proy.Save();
                e.Success = true;
                Ext.Msg.Show(new MessageBox.Config
                {
                    Title = "Desembolsos",
                    Message = "El desembolso se guardo correctamente.",
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.INFO
                });
            }
            catch (Exception ex)
            {
                e.Success = false;
                Ext.Msg.Show(new MessageBox.Config
                {
                    Buttons = MessageBox.Button.OK,
                    Icon = MessageBox.Icon.ERROR,
                    Title = "Fallo",
                    Message = "Ocurrio un error al guardar Desembolso"
                });
                Util.RegistarLog(ex.ToString());
            }
        }
        /// <summary>
        /// Limpia el formulario
        /// </summary>
        void LimpiarFormulario()
        {

            txtValContraparte2.Reset();
            txtValContraparte1.Reset();
            txtValPlan1.Reset();
            txtValSaldoPagar.Reset();
            txtValTotalPB.Reset();


        }
        #endregion
    }
}